package com.xiahui.day11.Test3;

/**
 *  static修饰代码块：随着JVM加载类而执行 多个静态代码块按照书写顺序执行 每个只执行一次 因为类只加载一次
 *  什么时候会加载类？
 *  1.new对象
 *  2.访问类中的静态属性 或者 静态方法
 *  静态代码块适用场景：当我们需要执行一些前置的操作 并且这个操作只需要执行一次
 *  比如 初始化数据 连接数据库 等等
 *  普通/实例代码块是随着对象的创建而执行的 每创建一个对象 就执行一次
 *
 */
public class TestStaticCode {
    static{
        System.out.println("静态代码块1");
    }

    static{
        System.out.println("静态代码块2");
    }

    {
        System.out.println("普通代码块/实例代码块1");
    }

    {
        System.out.println("普通代码块/实例代码块2");
    }

    public TestStaticCode() {
        System.out.println("TestStaticCode构造方法执行了");
    }

    static int num = 100;

    public static void  m1(){
        System.out.println("static修饰的m1方法");
    }

    public static void main(String[] args) {
        TestStaticCode testStaticCode1 = new TestStaticCode();
        TestStaticCode testStaticCode2 = new TestStaticCode();
        TestStaticCode testStaticCode3 = new TestStaticCode();

        System.out.println(num);

        m1();
    }

}
